//先载入一个模块配置文件，成功后，再载入需要的模块
//Common中包含了一些通用函数，比如判断js文件是否存在等。
//注意Element中define(['vue']),所以对vue引用不能使用首字大写
require(['Resource/Script/requireJs/_require.config.js?v='+Math.random()],function(){
  require(['vue','Common','axios'],function(vue,Common,axios){
    //在用户自定义文件中定义的mounted事件
    var _udfMounted = null;
    //用户自定义的data
    var _udfData = null;

    //为了兼容之前的写法
    var _sonTplObj = null;
    var opt = {
        el: '#div1',
        components:{},

        // components:{
        //   'comp-text':resolve=>require(['_vue!pathComponent/comp-text'], resolve),
        // },
        data: function() {
          var uData = {};
          if(_udfData) {
            uData = _udfData();
          }
          return Object.assign({
            //父窗体中的iframe组件的_uid
            uidParentComp : 0,
            //父窗体中的iframe组件
            compParent:null,
            //数据集的默认值，一般从php后台传入
            value : {},
            //sontpl中定义的函数集合
            callbacks : [],
            //当前记录集
            row :varTemplate.row,
          },uData);
        },
        methods:{
          //获得get参数
          getUrlKey : function(name) {
            var url = window.location.href;
            return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(url) || [, ""])[1].replace(/\+/g, '%20')) || null;
          },
          getCompParent : function() {
            return this.compParent;
          },
          getParentRow : function() {
            return this.compParent.$attrs.row;
          },
        },

        mounted : function() {
          //暴露变量，方便父页面获取
          window._objVue = this;

          this.uidParentComp = this.getUrlKey('uidParentComp');
          this.compParent = window.parent._ifrmComp[this.uidParentComp];
          this.value=this.compParent.value;


          //兼容之前的sonTpl写法,可同时支持两种写法
          if(!_sonTplObj.methods) {
            this.callbacks = _sonTplObj;
            if(_sonTplObj.main) {
              _sonTplObj.main.apply(this);
            }
          } else {
            if(_udfMounted) _udfMounted.apply(this);
          }

          //判断getValue是否存在
          if(!this.getValue) {
            console.error('子模板的sonTpl中必须定义getValue()函数');
            return false;
          }
        }
    };

    //载入sonTpl
    Common.setSontplOld(varTemplate);
    var _this = this;
    require([_tplPath_+'/'+varTemplate.sonTpl],function(optSon){

      _sonTplObj = optSon;
      if(optSon.methods) {
        // if(!_sonTplObj.methods) return;
        //合并 opt 和 optSon
        for(var k in optSon) {
          if(k=='mounted') {
            _udfMounted = optSon.mounted;
            continue;
          }
          if(k=='data') {
            _udfData = optSon.data;
            continue;
          }
          Object.assign(opt[k],optSon[k]);
        }
      }

      // dump(opt);
      new vue(opt);
      // dump(a);
    },function(err){
      console.log('sontpl不存在')
      new vue(opt);
    });
  })
});


